home *** CD-ROM | disk | FTP | other *** search
/ ETO Development Tools 4 / ETO Development Tools 4.iso / Tools - Objects / MacApp / MacApp 3.0a2 / CPlusIncludes / Script.h < prev    next >
Text File  |  1991-05-01  |  38KB  |  1,104 lines

  1. /************************************************************
  2.  
  3. Created: Tuesday, January 15, 1991 at 8:57 AM
  4.     Script.h
  5.     C Interface to the Macintosh Libraries
  6.  
  7.  
  8.         Copyright Apple Computer, Inc.    1986-1990
  9.         All rights reserved
  10.  
  11. ************************************************************/
  12.  
  13.  
  14. #ifndef __SCRIPT__
  15. #define __SCRIPT__
  16.  
  17. #ifndef __TYPES__
  18. #include <Types.h>
  19. #endif
  20.  
  21. #ifndef __GEOMETRY__
  22. #include <Geometry.h>
  23. #endif
  24.  
  25. #ifndef __OSUTILS__
  26. #include <OSUtils.h>
  27. #endif
  28.  
  29.  
  30. enum {
  31.  
  32.  
  33. /* Script System constants */
  34.     smSystemScript = -1,            /*designates system script.*/
  35.     smCurrentScript = -2,           /*designates current font script.*/
  36.  
  37.     smRoman = 0,                    /*Roman*/
  38.     smJapanese = 1,                 /*Japanese*/
  39.     smTradChinese = 2,              /*Traditional Chinese*/
  40.     smKorean = 3,                   /*Korean*/
  41.     smArabic = 4,                   /*Arabic*/
  42.     smHebrew = 5,                   /*Hebrew*/
  43.     smGreek = 6,                    /*Greek*/
  44.     smCyrillic = 7,                 /*Cyrillic*/
  45.     smRSymbol = 8,                  /*Right-left symbol*/
  46.     smDevanagari = 9,               /*Devanagari*/
  47.     smGurmukhi = 10,                /*Gurmukhi*/
  48.     smGujarati = 11,                /*Gujarati*/
  49.     smOriya = 12,                   /*Oriya*/
  50.     smBengali = 13,                 /*Bengali*/
  51.     smTamil = 14,                   /*Tamil*/
  52.     smTelugu = 15,                  /*Telugu*/
  53.     smKannada = 16,                 /*Kannada/Kanarese*/
  54.     smMalayalam = 17                /*Malayalam*/
  55. };
  56. enum {
  57.     smSinhalese = 18,               /*Sinhalese*/
  58.     smBurmese = 19,                 /*Burmese*/
  59.     smKhmer = 20,                   /*Khmer/Cambodian*/
  60.     smThai = 21,                    /*Thai*/
  61.     smLaotian = 22,                 /*Laotian*/
  62.     smGeorgian = 23,                /*Georgian*/
  63.     smArmenian = 24,                /*Armenian*/
  64.     smSimpChinese = 25,             /*Simplified Chinese*/
  65.     smTibetan = 26,                 /*Tibetan*/
  66.     smMongolian = 27,               /*Mongolian*/
  67.     smGeez = 28,                    /*Geez/Ethiopic*/
  68.     smEthiopic = 28,                /*Synonym for smGeez*/
  69.     smEastEurRoman = 29,            /*Synonym for smSlavic*/
  70.     smVietnamese = 30,              /*Vietnamese*/
  71.     smExtArabic = 31,               /*extended Arabic*/
  72.     smUninterp = 32,                /*uninterpreted symbols, e.g. palette symbols*/
  73.  
  74. /*Obsolete names for script systems (kept for backward compatibility)*/
  75.     smChinese = 2,                  /*(use smTradChinese or smSimpChinese)*/
  76.     smRussian = 7,                  /*(old name for smCyrillic)*/
  77.  
  78. /* smMaldivian = 25;                                 (no more smMaldivian!)*/
  79.     smAmharic = 28,                 /*(old name for smGeez)*/
  80.     smSlavic = 29                   /*(old name for smEastEurRoman)*/
  81. };
  82. enum {
  83.     smSindhi = 31,                  /*(old name for smExtArabic)*/
  84.  
  85. /* Calendar Codes */
  86.     calGregorian = 0,
  87.     calArabicCivil = 1,
  88.     calArabicLunar = 2,
  89.     calJapanese = 3,
  90.     calJewish = 4,
  91.     calCoptic = 5,
  92.     calPersian = 6,
  93.  
  94. /* Integer Format Codes */
  95.     intWestern = 0,
  96.     intArabic = 1,
  97.     intRoman = 2,
  98.     intJapanese = 3,
  99.     intEuropean = 4,
  100.     intOutputMask = 0x8000,
  101.  
  102. /* CharByte byte types */
  103.     smSingleByte = 0,
  104.     smFirstByte = -1,
  105.     smLastByte = 1,
  106.     smMiddleByte = 2,
  107.  
  108. /* CharType field masks */
  109.     smcTypeMask = 0x000F,
  110.     smcReserved = 0x00F0
  111. };
  112. enum {
  113.     smcClassMask = 0x0F00,
  114.     smcOrientationMask = 0x1000,    /*two-byte script glyph orientation*/
  115.     smcRightMask = 0x2000,
  116.     smcUpperMask = 0x4000,
  117.     smcDoubleMask = 0x8000,
  118.  
  119. /* Basic CharType character types */
  120.     smCharPunct = 0x0000,
  121.     smCharAscii = 0x0001,
  122.     smCharEuro = 0x0007,
  123.     smCharExtAscii = 0x0007,        /* More correct synonym for smCharEuro */
  124.  
  125. /* Additional CharType character types for script systems */
  126.     smCharKatakana = 0x0002,        /*Japanese Katakana*/
  127.     smCharHiragana = 0x0003,        /*Japanese Hiragana*/
  128.     smCharIdeographic = 0x0004,     /*Hanzi, Kanji, Hanja*/
  129.     smCharTwoByteGreek = 0x0005,    /*2-byte Greek in Far East systems*/
  130.     smCharTwoByteRussian = 0x0006,  /*2-byte Cyrillic in Far East systems*/
  131.     smCharBidirect = 0x0008,        /*Arabic/Hebrew*/
  132.     smCharHangul = 0x000C,          /*Korean Hangul*/
  133.     smCharJamo = 0x000D,            /*Korean Jamo*/
  134.  
  135. /* old names for above, for backward compatibility */
  136.     smCharFISKana = 0x0002,         /*Katakana*/
  137.     smCharFISGana = 0x0003,         /*Hiragana*/
  138.     smCharFISIdeo = 0x0004          /*Hanzi, Kanji, Hanja*/
  139. };
  140. enum {
  141.     smCharFISGreek = 0x0005,        /*2-byte Greek in Far East systems*/
  142.     smCharFISRussian = 0x0006,      /*2-byte Cyrillic in Far East systems*/
  143.  
  144. /* CharType classes for punctuation (smCharPunct) */
  145.     smPunctNormal = 0x0000,
  146.     smPunctNumber = 0x0100,
  147.     smPunctSymbol = 0x0200,
  148.     smPunctBlank = 0x0300,
  149.     smPunctRepeat = 0x0400,         /* FIS: wildcard */
  150.     smPunctGraphic = 0x0500,        /* FIS: line graphics */
  151.  
  152. /* CharType classes for FISKana, FISGana */
  153.     smKanaSmall = 0x0100,           /*small kana character*/
  154.     smKanaHardOK = 0x0200,          /*can have dakuten*/
  155.     smKanaSoftOK = 0x0300,          /*can have dakuten or han-dakuten*/
  156.  
  157. /* CharType Ideographics classes for two-byte systems */
  158.     smIdeographicLevel1 = 0x0000,   /*level 1 char*/
  159.     smIdeographicLevel2 = 0x0100,   /*level 2 char*/
  160.     smIdeographicUser = 0x0200,     /*user char*/
  161.  
  162. /* old names for above, for backward compatibility */
  163.     smFISClassLvl1 = 0x0000,        /*level 1 char*/
  164.     smFISClassLvl2 = 0x0100,        /*level 2 char*/
  165.     smFISClassUser = 0x0200,        /*user char*/
  166.  
  167. /* CharType Jamo classes for Korean systems */
  168.     smJamoJaeum = 0x0000,           /*simple consonant char*/
  169.     smJamoBogJaeum = 0x0100,        /*complex consonant char*/
  170.     smJamoMoeum = 0x0200            /*simple vowel char*/
  171. };
  172. enum {
  173.     smJamoBogMoeum = 0x0300,        /*complex vowel char*/
  174.  
  175. /* CharType FIS glyph orientation */
  176.     smCharHorizontal = 0x0000,      /* horizontal character form, or for both */
  177.     smCharVertical = 0x1000,        /* vertical character form */
  178.  
  179. /* CharType directions */
  180.     smCharLeft = 0x0000,
  181.     smCharRight = 0x2000,
  182.  
  183. /* CharType case modifers */
  184.     smCharLower = 0x0000,
  185.     smCharUpper = 0x4000,
  186.  
  187. /* CharType character size modifiers (1 or multiple bytes). */
  188.     smChar1byte = 0x0000,
  189.     smChar2byte = 0x8000,
  190.  
  191. /* Char2Pixel directions */
  192.     smLeftCaret = 0,                /*Place caret for left block*/
  193.     smRightCaret = -1,              /*Place caret for right block*/
  194.     smHilite = 1,                   /*Direction is TESysJust*/
  195.  
  196. /* Transliterate target types for Roman */
  197.     smTransAscii = 0,
  198.     smTransNative = 1,
  199.     smTransCase = 0xFE,
  200.     smTransSystem = 0xFF,           /*convert to system script*/
  201.  
  202. /* Transliterate target types for FIS */
  203.     smTransAscii1 = 2,              /*1-byte Roman*/
  204.     smTransAscii2 = 3,              /*2-byte Roman*/
  205.     smTransKana1 = 4,               /*1-byte Japanese Katakana*/
  206.     smTransKana2 = 5                /*2-byte Japanese Katakana*/
  207. };
  208. enum {
  209.     smTransGana2 = 7,               /*2-byte Japanese Hiragana (no 1-byte Hiragana)*/
  210.     smTransHangul2 = 8,             /*2-byte Korean Hangul*/
  211.     smTransJamo2 = 9,               /*2-byte Korean Jamo*/
  212.     smTransBopomofo2 = 10,          /*2-byte Chinese Bopomofo*/
  213.  
  214. /* Transliterate target modifiers */
  215.     smTransLower = 0x4000,
  216.     smTransUpper = 0x8000,
  217.  
  218. /* Transliterate source mask - general */
  219.     smMaskAll = 0xFFFFFFFF,         /*Convert all text*/
  220.  
  221. /* Transliterate source masks */
  222.     smMaskAscii = 0x00000001,       /*2^smTransAscii*/
  223.     smMaskNative = 0x00000002,      /*2^smTransNative*/
  224.  
  225. /* Transliterate source masks for FIS */
  226.     smMaskAscii1 = 0x00000004,      /*2^smTransAscii1*/
  227.     smMaskAscii2 = 0x00000008,      /*2^smTransAscii2*/
  228.     smMaskKana1 = 0x00000010,       /*2^smTransKana1*/
  229.     smMaskKana2 = 0x00000020,       /*2^smTransKana2*/
  230.     smMaskGana2 = 0x00000080,       /*2^smTransGana2*/
  231.     smMaskHangul2 = 0x00000100,     /*2^smTransHangul2*/
  232.     smMaskJamo2 = 0x00000200,       /*2^smTransJamo2*/
  233.     smMaskBopomofo2 = 0x00000400,   /*2^smTransBopomofo2*/
  234.  
  235. /* Result values from GetEnvirons, SetEnvirons, GetScript and SetScript calls. */
  236.     smNotInstalled = 0,             /*routine not available in script*/
  237.     smBadVerb = -1,                 /*Bad verb passed to a routine*/
  238.     smBadScript = -2                /*Bad script code passed to a routine*/
  239. };
  240. enum {
  241.  
  242. /* Values for script redraw flag. */
  243.     smRedrawChar = 0,               /*Redraw character only*/
  244.     smRedrawWord = 1,               /*Redraw entire word (2-byte systems)*/
  245.     smRedrawLine = -1,              /*Redraw entire line (bidirectional systems)*/
  246.  
  247. /* GetEnvirons and SetEnvirons verbs */
  248.     smVersion = 0,                  /*Environment version number*/
  249.     smMunged = 2,                   /*Globals change count*/
  250.     smEnabled = 4,                  /*Environment enabled flag*/
  251.     smBidirect = 6,                 /*At least on bidirect script*/
  252.     smFontForce = 8,                /*Force font flag*/
  253.     smIntlForce = 10,               /*Force intl flag*/
  254.     smForced = 12,                  /*script forced to system script*/
  255.     smDefault = 14,                 /*script defaulted to Roman script*/
  256.     smPrint = 16,                   /*Printer action routine*/
  257.     smSysScript = 18,               /*System script*/
  258.     smLastScript = 20,              /*Last keyboard script*/
  259.     smKeyScript = 22,               /*Keyboard script*/
  260.     smSysRef = 24,                  /*System folder refNum*/
  261.     smKeyCache = 26,                /*Keyboard table cache pointer*/
  262.     smKeySwap = 28,                 /*Swapping table pointer*/
  263.     smGenFlags = 30,                /*General flags long*/
  264.     smOverride = 32                 /*Script override flags*/
  265. };
  266. enum {
  267.     smCharPortion = 34,             /*Ch vs SpExtra proportion*/
  268.  
  269. /* New for System 7.0: */
  270.     smDoubleByte = 36,              /*Flag for double-byte script installed*/
  271.     smKCHRCache = 38,               /*Returns pointer to KCHR cache*/
  272.     smRegionCode = 40,              /*Returns current region code (verXxx)*/
  273.  
  274. /* GetScript and SetScript verbs.
  275. Note: Verbs private to script systems are negative, while
  276. those general across script systems are non-negative. */
  277.     smScriptVersion = 0,            /*Script software version*/
  278.     smScriptMunged = 2,             /*Script entry changed count*/
  279.     smScriptEnabled = 4,            /*Script enabled flag*/
  280.     smScriptRight = 6,              /*Right to left flag*/
  281.     smScriptJust = 8,               /*Justification flag*/
  282.     smScriptRedraw = 10,            /*Word redraw flag*/
  283.     smScriptSysFond = 12,           /*Preferred system font*/
  284.     smScriptAppFond = 14,           /*Preferred Application font*/
  285.     smScriptBundle = 16,            /*Beginning of itlb verbs*/
  286.     smScriptNumber = 16,            /*Script itl0 id*/
  287.     smScriptDate = 18,              /*Script itl1 id*/
  288.     smScriptSort = 20,              /*Script itl2 id*/
  289.     smScriptFlags = 22,             /*flags word*/
  290.     smScriptToken = 24,             /*Script itl4 id*/
  291.     smScriptEncoding = 26,          /*id of optional itl5, if present*/
  292.     smScriptLang = 28               /*Current language for script*/
  293. };
  294. enum {
  295.     smScriptNumDate = 30,           /*Script KCHR id*/
  296.     smScriptKeys = 32,              /*Script KEYC id from dictionary*/
  297.     smScriptIcon = 34,              /*ID # of SICN or kcs#/kcs4/kcs8 suite*/
  298.     smScriptPrint = 36,             /*Script printer action routine*/
  299.     smScriptTrap = 38,              /*Trap entry pointer*/
  300.     smScriptCreator = 40,           /*Script file creator*/
  301.     smScriptFile = 42,              /*Script file name*/
  302.     smScriptName = 44,              /*Script name*/
  303.  
  304. /* There is a hole here for old Kanji private verbs 46-76 
  305.  
  306.  New for System 7.0: */
  307.     smScriptMonoFondSize = 78,      /*default monospace FOND (hi) & size (lo)*/
  308.     smScriptPrefFondSize = 80,      /*preferred FOND (hi) & size (lo)*/
  309.     smScriptSmallFondSize = 82,     /*default small FOND (hi) & size (lo)*/
  310.     smScriptSysFondSize = 84,       /*default system FOND (hi) & size (lo)*/
  311.     smScriptAppFondSize = 86,       /*default app FOND (hi) & size (lo)*/
  312.     smScriptHelpFondSize = 88,      /*default Help Mgr FOND (hi) & size (lo)*/
  313.     smScriptValidStyles = 90,       /*mask of valid styles for script*/
  314.     smScriptAliasStyle = 92,        /*style (set) to use for aliases*/
  315.  
  316. /* Negative verbs for KeyScript */
  317.     smKeyNextScript = -1,           /* Switch to next available script */
  318.     smKeySysScript = -2,            /* Switch to the system script */
  319.     smKeySwapScript = -3,           /* Switch to previously-used script */
  320.  
  321. /* New for System 7.0: */
  322.     smKeyNextKybd = -4              /* Switch to next keyboard in current script */
  323. };
  324. enum {
  325.     smKeySwapKybd = -5,             /* Switch to previously-used keyboard in current keyscript */
  326.  
  327.     smKeyDisableKybds = -6,         /* Disable keyboards not in system or Roman script */
  328.     smKeyEnableKybds = -7,          /* Re-enable keyboards for all enabled scripts */
  329.     smKeyToggleInline = -8,         /* Toggle inline input for current keyscript */
  330.     smKeyToggleDirection = -9,      /* Toggle default line direction (TESysJust) */
  331.     smKeyNextInputMethod = -10,     /* Switch to next input method in current keyscript */
  332.     smKeySwapInputMethod = -11,     /* Switch to last-used input method in current keyscript */
  333.  
  334.     smKeyDisableKybdSwitch = -12,   /* Disable switching from the current keyboard */
  335.  
  336.  
  337. /* Bits in the smScriptFlags word
  338. (bits above 7 are non-static) */
  339.     smsfIntellCP = 0,               /*script has intellegent cut & paste*/
  340.     smsfSingByte = 1,               /*script has only single bytes*/
  341.     smsfNatCase = 2,                /*native chars have upper & lower case*/
  342.     smsfContext = 3,                /*contextual script (e.g. AIS-based)*/
  343.     smsfNoForceFont = 4,            /*Will not force characters*/
  344.     smsfB0Digits = 5,               /*Has alternate digits at B0-B9*/
  345.     smsfAutoInit = 6,               /*auto initialize the script*/
  346.     smsfForms = 13,                 /*Uses contextual forms for letters*/
  347.     smsfLigatures = 14,             /*Uses contextual ligatures*/
  348.     smsfReverse = 15,               /*Reverses native text, right-left*/
  349.  
  350. /* Bits in the smGenFlags long.
  351. First (high-order) byte is set from itlc flags byte. */
  352.     smfShowIcon = 31,               /*Show icon even if only one script*/
  353.     smfDualCaret = 30               /*Use dual caret for mixed direction text*/
  354. };
  355. enum {
  356.     smfNameTagEnab = 29,            /*Reserved for internal use*/
  357.  
  358. /* Roman script constants 
  359.  
  360.  The following are here for backward compatibility, but should not be used. 
  361.  This information should be obtained using GetScript. */
  362.     romanSysFond = 0x3FFF,          /*system font id number*/
  363.     romanAppFond = 3,               /*application font id number*/
  364.     romanFlags = 0x0007,            /*roman settings*/
  365.  
  366. /* Script Manager font equates. */
  367.     smFondStart = 0x4000,           /*start from 16K*/
  368.     smFondEnd = 0xC000,             /*past end of range at 48K*/
  369.  
  370. /* Miscellaneous font equates. */
  371.     smUprHalfCharSet = 0x80,        /*first char code in top half of std char set*/
  372.  
  373. /* Character Set Extensions */
  374.     diaeresisUprY = 0xD9,
  375.     fraction = 0xDA,
  376.     intlCurrency = 0xDB,
  377.     leftSingGuillemet = 0xDC,
  378.     rightSingGuillemet = 0xDD,
  379.     fiLigature = 0xDE,
  380.     flLigature = 0xDF,
  381.     dblDagger = 0xE0,
  382.     centeredDot = 0xE1,
  383.     baseSingQuote = 0xE2,
  384.     baseDblQuote = 0xE3,
  385.     perThousand = 0xE4,
  386.     circumflexUprA = 0xE5
  387. };
  388. enum {
  389.     circumflexUprE = 0xE6,
  390.     acuteUprA = 0xE7,
  391.     diaeresisUprE = 0xE8,
  392.     graveUprE = 0xE9,
  393.     acuteUprI = 0xEA,
  394.     circumflexUprI = 0xEB,
  395.     diaeresisUprI = 0xEC,
  396.     graveUprI = 0xED,
  397.     acuteUprO = 0xEE,
  398.     circumflexUprO = 0xEF,
  399.     appleLogo = 0xF0,
  400.     graveUprO = 0xF1,
  401.     acuteUprU = 0xF2,
  402.     circumflexUprU = 0xF3,
  403.     graveUprU = 0xF4,
  404.     dotlessLwrI = 0xF5,
  405.     circumflex = 0xF6,
  406.     tilde = 0xF7,
  407.     macron = 0xF8,
  408.     breveMark = 0xF9
  409. };
  410. enum {
  411.     overDot = 0xFA,
  412.     ringMark = 0xFB,
  413.     cedilla = 0xFC,
  414.     doubleAcute = 0xFD,
  415.     ogonek = 0xFE,
  416.     hachek = 0xFF,
  417.  
  418. /* String2Date status values */
  419.     fatalDateTime = 0x8000,
  420.     longDateFound = 1,
  421.     leftOverChars = 2,
  422.     sepNotIntlSep = 4,
  423.     fieldOrderNotIntl = 8,
  424.     extraneousStrings = 16,
  425.     tooManySeps = 32,
  426.     sepNotConsistent = 64,
  427.     tokenErr = 0x8100,
  428.     cantReadUtilities = 0x8200,
  429.     dateTimeNotFound = 0x8400,
  430.     dateTimeInvalid = 0x8800,
  431.  
  432. /* TokenType values */
  433.     tokenIntl = 4,                  /*the itl resource number of the tokenizer*/
  434.     tokenEmpty = -1
  435. };
  436. enum {
  437.     tokenUnknown = 0,
  438.     tokenWhite = 1,
  439.     tokenLeftLit = 2,
  440.     tokenRightLit = 3,
  441.     tokenAlpha = 4,
  442.     tokenNumeric = 5,
  443.     tokenNewLine = 6,
  444.     tokenLeftComment = 7,
  445.     tokenRightComment = 8,
  446.     tokenLiteral = 9,
  447.     tokenEscape = 10,
  448.     tokenAltNum = 11,
  449.     tokenRealNum = 12,
  450.     tokenAltReal = 13,
  451.     tokenReserve1 = 14,
  452.     tokenReserve2 = 15,
  453.     tokenLeftParen = 16,
  454.     tokenRightParen = 17,
  455.     tokenLeftBracket = 18,
  456.     tokenRightBracket = 19
  457. };
  458. enum {
  459.     tokenLeftCurly = 20,
  460.     tokenRightCurly = 21,
  461.     tokenLeftEnclose = 22,
  462.     tokenRightEnclose = 23,
  463.     tokenPlus = 24,
  464.     tokenMinus = 25,
  465.     tokenAsterisk = 26,
  466.     tokenDivide = 27,
  467.     tokenPlusMinus = 28,
  468.     tokenSlash = 29,
  469.     tokenBackSlash = 30,
  470.     tokenLess = 31,
  471.     tokenGreat = 32,
  472.     tokenEqual = 33,
  473.     tokenLessEqual2 = 34,
  474.     tokenLessEqual1 = 35,
  475.     tokenGreatEqual2 = 36,
  476.     tokenGreatEqual1 = 37,
  477.     token2Equal = 38,
  478.     tokenColonEqual = 39
  479. };
  480. enum {
  481.     tokenNotEqual = 40,
  482.     tokenLessGreat = 41,
  483.     tokenExclamEqual = 42,
  484.     tokenExclam = 43,
  485.     tokenTilde = 44,
  486.     tokenComma = 45,
  487.     tokenPeriod = 46,
  488.     tokenLeft2Quote = 47,
  489.     tokenRight2Quote = 48,
  490.     tokenLeft1Quote = 49,
  491.     tokenRight1Quote = 50,
  492.     token2Quote = 51,
  493.     token1Quote = 52,
  494.     tokenSemicolon = 53,
  495.     tokenPercent = 54,
  496.     tokenCaret = 55,
  497.     tokenUnderline = 56,
  498.     tokenAmpersand = 57,
  499.     tokenAtSign = 58,
  500.     tokenBar = 59
  501. };
  502. enum {
  503.     tokenQuestion = 60,
  504.     tokenPi = 61,
  505.     tokenRoot = 62,
  506.     tokenSigma = 63,
  507.     tokenIntegral = 64,
  508.     tokenMicro = 65,
  509.     tokenCapPi = 66,
  510.     tokenInfinity = 67,
  511.     tokenColon = 68,
  512.     tokenHash = 69,
  513.     tokenDollar = 70,
  514.     tokenNoBreakSpace = 71,
  515.     tokenFraction = 72,
  516.     tokenIntlCurrency = 73,
  517.     tokenLeftSingGuillemet = 74,
  518.     tokenRightSingGuillemet = 75,
  519.     tokenPerThousand = 76,
  520.     tokenEllipsis = 77,
  521.     tokenCenterDot = 78,
  522.     tokenNil = 127
  523. };
  524. enum {
  525.     delimPad = -2,
  526.  
  527. /* obsolete, misspelled token names kept for backward compatibility */
  528.     tokenTilda = 44,
  529.     tokenCarat = 55,
  530.  
  531. /* the NumberParts indices */
  532.     tokLeftQuote = 1,
  533.     tokRightQuote = 2,
  534.     tokLeadPlacer = 3,
  535.     tokLeader = 4,
  536.     tokNonLeader = 5,
  537.     tokZeroLead = 6,
  538.     tokPercent = 7,
  539.     tokPlusSign = 8,
  540.     tokMinusSign = 9,
  541.     tokThousands = 10,
  542.     tokSeparator = 12,              /*11 is a reserved field*/
  543.     tokEscape = 13,
  544.     tokDecPoint = 14,
  545.     tokEPlus = 15,
  546.     tokEMinus = 16,
  547.     tokMaxSymbols = 31,
  548.     curNumberPartsVersion = 1       /*current version of NumberParts record*/
  549. };
  550. enum {
  551.     fVNumber = 0,                   /*first version of NumFormatString*/
  552.  
  553. /* Date equates */
  554.     smallDateBit = 31,              /*Restrict valid date/time to range of Time global*/
  555.     togChar12HourBit = 30,          /*If toggling hour by char, accept hours 1..12 only*/
  556.     togCharZCycleBit = 29,          /*Modifier for togChar12HourBit: accept hours 0..11 only*/
  557.     togDelta12HourBit = 28,         /*If toggling hour up/down, restrict to 12-hour range (am/pm)*/
  558.     genCdevRangeBit = 27,           /*Restrict date/time to range used by genl CDEV*/
  559.     validDateFields = -1,
  560.     maxDateField = 10,
  561.     eraMask = 0x0001,
  562.     yearMask = 0x0002,
  563.     monthMask = 0x0004,
  564.     dayMask = 0x0008,
  565.     hourMask = 0x0010,
  566.     minuteMask = 0x0020,
  567.     secondMask = 0x0040,
  568.     dayOfWeekMask = 0x0080,
  569.     dayOfYearMask = 0x0100,
  570.     weekOfYearMask = 0x0200,
  571.     pmMask = 0x0400,
  572.     dateStdMask = 0x007F
  573. };
  574. enum {
  575.  
  576. /* Toggle results */
  577.     toggleUndefined = 0,
  578.     toggleOK = 1,
  579.     toggleBadField = 2,
  580.     toggleBadDelta = 3,
  581.     toggleBadChar = 4,
  582.     toggleUnknown = 5,
  583.     toggleBadNum = 6,
  584.     toggleOutOfRange = 7,           /*synonym for toggleErr3*/
  585.     toggleErr3 = 7,
  586.     toggleErr4 = 8,
  587.     toggleErr5 = 9,
  588.  
  589. /* Constants for truncWhere argument in TruncString and TruncText */
  590.     smTruncEnd = 0,                 /* Truncate at end */
  591.     smTruncMiddle = 0x4000,         /* Truncate in middle */
  592.  
  593. /* Constants for TruncString and TruncText results */
  594.     smNotTruncated = 0,             /* No truncation was necessary */
  595.     smTruncated = 1,                /* Truncation performed */
  596.     smTruncErr = -1,                /* General error */
  597.  
  598. /*Constants for styleRunPosition argument in NPortionText, NDrawJust,
  599.  NMeasureJust, NChar2Pixel, and NPixel2Char.*/
  600.     smOnlyStyleRun = 0,             /* This is the only style run on the line*/
  601.     smLeftStyleRun = 1,             /* This is leftmost of multiple style runs on the line*/
  602.     smRightStyleRun = 2,            /* This is rightmost of multiple style runs on the line*/
  603.     smMiddleStyleRun = 3,           /* There are multiple style runs on the line and this
  604.  is neither the leftmost nor the rightmost. */
  605. };
  606.  
  607.  
  608. enum {tokenOK,tokenOverflow,stringOverflow,badDelim,badEnding,crash};
  609. typedef unsigned char TokenResults;
  610.  
  611. enum {eraField,yearField,monthField,dayField,hourField,minuteField,secondField,
  612.     dayOfWeekField,dayOfYearField,weekOfYearField,pmField,res1Field,res2Field,
  613.     res3Field};
  614. typedef unsigned char LongDateField;
  615.  
  616. enum {smBreakWord,smBreakChar,smBreakOverflow};
  617. typedef unsigned char StyledLineBreakCode;
  618.  
  619. enum {fPositive,fNegative,fZero};
  620. typedef unsigned char FormatClass;
  621.  
  622. enum {fFormatOK,fBestGuess,fOutOfSynch,fSpuriousChars,fMissingDelimiter,
  623.     fExtraDecimal,fMissingLiteral,fExtraExp,fFormatOverflow,fFormStrIsNAN,
  624.     fBadPartsTable,fExtraPercent,fExtraSeparator,fEmptyFormatString};
  625. typedef unsigned char FormatResultType;
  626.  
  627.  
  628. typedef char CharByteTable[256];
  629. typedef short ToggleResults;
  630.  
  631. struct BreakTable {
  632.     char charTypes[256];
  633.     short tripleLength;
  634.     short triples[1];
  635. };
  636.  
  637. typedef struct BreakTable BreakTable;
  638. typedef BreakTable *BreakTablePtr;
  639.  
  640. /* New NBreakTable for System 7.0: */
  641. struct NBreakTable {
  642.     signed char flags1;
  643.     signed char flags2;
  644.     short version;
  645.     short classTableOff;
  646.     short auxCTableOff;
  647.     short backwdTableOff;
  648.     short forwdTableOff;
  649.     short doBackup;
  650.     short reserved;
  651.     char charTypes[256];
  652.     short tables[1];
  653. };
  654.  
  655. typedef struct NBreakTable NBreakTable;
  656. typedef NBreakTable *NBreakTablePtr;
  657.  
  658. struct OffPair {
  659.     short offFirst;
  660.     short offSecond;
  661. };
  662.  
  663. typedef struct OffPair OffPair;
  664.  
  665.  
  666. typedef OffPair OffsetTable[3];
  667.  
  668. struct ItlcRecord {
  669.     short itlcSystem;               /*default system script*/
  670.     short itlcReserved;             /*reserved*/
  671.     char itlcFontForce;             /*default font force flag*/
  672.     char itlcIntlForce;             /*default intl force flag*/
  673.     char itlcOldKybd;               /*old keyboard*/
  674.     char itlcFlags;                 /*general flags*/
  675.     short itlcIconOffset;           /*script icon offset*/
  676.     char itlcIconSide;              /*icon side*/
  677.     char itlcIconRsvd;              /*rsvd for other icon info*/
  678.     short itlcRegionCode;           /*preferred verXxx code*/
  679.     char itlcReserved3[34];         /*for future use*/
  680. };
  681.  
  682. typedef struct ItlcRecord ItlcRecord;
  683.  
  684. struct ItlbRecord {
  685.     short itlbNumber;               /*itl0 id number*/
  686.     short itlbDate;                 /*itl1 id number*/
  687.     short itlbSort;                 /*itl2 id number*/
  688.     short itlbFlags;                /*Script flags*/
  689.     short itlbToken;                /*itl4 id number*/
  690.     short itlbEncoding;             /*itl5 ID # (optional; char encoding)*/
  691.     short itlbLang;                 /*cur language for script */
  692.     char itlbNumRep;                /*number representation code*/
  693.     char itlbDateRep;               /*date representation code */
  694.     short itlbKeys;                 /*KCHR id number*/
  695.     short itlbIcon;                 /*ID # of SICN or kcs#/kcs4/kcs8 suite.*/
  696. };
  697.  
  698. typedef struct ItlbRecord ItlbRecord;
  699.  
  700. /* New ItlbExtRecord structure for System 7.0 */
  701. struct ItlbExtRecord {
  702.     ItlbRecord base;                /*un-extended ItlbRecord*/
  703.     long itlbLocalSize;             /*size of script's local record*/
  704.     short itlbMonoFond;             /*default monospace FOND ID*/
  705.     short itlbMonoSize;             /*default monospace font size*/
  706.     short itlbPrefFond;             /*preferred FOND ID*/
  707.     short itlbPrefSize;             /*preferred font size*/
  708.     short itlbSmallFond;            /*default small FOND ID*/
  709.     short itlbSmallSize;            /*default small font size*/
  710.     short itlbSysFond;              /*default system FOND ID*/
  711.     short itlbSysSize;              /*default system font size*/
  712.     short itlbAppFond;              /*default application FOND ID*/
  713.     short itlbAppSize;              /*default application font size*/
  714.     short itlbHelpFond;             /*default Help Mgr FOND ID*/
  715.     short itlbHelpSize;             /*default Help Mgr font size*/
  716.     Style itlbValidStyles;          /*set of valid styles for script*/
  717.     Style itlbAliasStyle;           /*style (set) to mark aliases*/
  718. };
  719.  
  720. typedef struct ItlbExtRecord ItlbExtRecord;
  721.  
  722. struct MachineLocation {
  723.     Fract latitude;
  724.     Fract longitude;
  725.     union{
  726.         char dlsDelta;              /*signed byte; daylight savings delta*/
  727.         long gmtDelta;              /*must mask - see documentation*/
  728.         }gmtFlags;
  729. };
  730.  
  731. typedef struct MachineLocation MachineLocation;
  732.  
  733.  
  734. typedef short String2DateStatus;
  735. typedef short TokenType;
  736. typedef TokenType DelimType[2];
  737. typedef TokenType CommentType[4];
  738.  
  739. struct TokenRec {
  740.     TokenType theToken;
  741.     Ptr position;                   /*pointer into original Source*/
  742.     long length;                    /*length of text in original source*/
  743.     StringPtr stringPosition;       /*Pascal/C string copy of identifier*/
  744. };
  745.  
  746. typedef struct TokenRec TokenRec;
  747. typedef TokenRec *TokenRecPtr;
  748.  
  749. struct TokenBlock {
  750.     Ptr source;                     /*pointer to stream of characters*/
  751.     long sourceLength;              /*length of source stream*/
  752.     Ptr tokenList;                  /*pointer to array of tokens*/
  753.     long tokenLength;               /*maximum length of TokenList*/
  754.     long tokenCount;                /*number tokens generated by tokenizer*/
  755.     Ptr stringList;                 /*pointer to stream of identifiers*/
  756.     long stringLength;              /*length of string list*/
  757.     long stringCount;               /*number of bytes currently used*/
  758.     Boolean doString;               /*make strings & put into StringLIst*/
  759.     Boolean doAppend;               /*append to TokenList rather than replace*/
  760.     Boolean doAlphanumeric;         /*identifiers may include numeric*/
  761.     Boolean doNest;                 /*do comments nest?*/
  762.     TokenType leftDelims[2];
  763.     TokenType rightDelims[2];
  764.     TokenType leftComment[4];
  765.     TokenType rightComment[4];
  766.     TokenType escapeCode;           /*escape symbol code*/
  767.     TokenType decimalCode;
  768.     Handle itlResource;             /*ptr to itl4 resource of current script*/
  769.     long reserved[8];               /*must be zero!*/
  770. };
  771.  
  772. typedef struct TokenBlock TokenBlock;
  773. typedef TokenBlock *TokenBlockPtr;
  774.  
  775. struct UntokenTable {
  776.     short len;
  777.     short lastToken;
  778.     short index[256];               /*index table; last = lastToken*/
  779. };
  780.  
  781. typedef struct UntokenTable UntokenTable;
  782. typedef UntokenTable *UntokenTablePtr, **UntokenTableHandle;
  783.  
  784. struct DateCacheRecord {
  785.     short hidden[256];              /*only for temporary use*/
  786. };
  787.  
  788. typedef struct DateCacheRecord DateCacheRecord;
  789. typedef DateCacheRecord *DateCachePtr;
  790.  
  791.  
  792. typedef comp LongDateTime;
  793.  
  794. union LongDateCvt {
  795.     comp c;
  796.     struct {
  797.         long lHigh;
  798.         long lLow;
  799.         } hl;
  800. };
  801.  
  802. typedef union LongDateCvt LongDateCvt;
  803.  
  804. union LongDateRec {
  805.     struct {
  806.         short era;
  807.         short year;
  808.         short month;
  809.         short day;
  810.         short hour;
  811.         short minute;
  812.         short second;
  813.         short dayOfWeek;
  814.         short dayOfYear;
  815.         short weekOfYear;
  816.         short pm;
  817.         short res1;
  818.         short res2;
  819.         short res3;
  820.         } ld;
  821.     short list[14];                 /*Index by LongDateField!*/
  822.     struct {
  823.         short eraAlt;
  824.         DateTimeRec oldDate;
  825.         } od;
  826. };
  827.  
  828. typedef union LongDateRec LongDateRec;
  829.  
  830.  
  831. typedef char DateDelta;
  832.  
  833. struct TogglePB {
  834.     long togFlags;                  /*caller normally sets low word to dateStdMask=$7F*/
  835.     ResType amChars;                /*from intl0*/
  836.     ResType pmChars;                /*from intl0*/
  837.     long reserved[4];
  838. };
  839.  
  840. typedef struct TogglePB TogglePB;
  841.  
  842.  
  843. typedef short FormatOrder[1];
  844. typedef FormatOrder *FormatOrderPtr;
  845. typedef short FormatStatus;
  846.  
  847. union WideChar {
  848.     char a[2];                      /*0 is the high order character*/
  849.     short b;
  850. };
  851.  
  852. typedef union WideChar WideChar;
  853.  
  854. struct WideCharArr {
  855.     short size;
  856.     WideChar data[10];
  857. };
  858.  
  859. typedef struct WideCharArr WideCharArr;
  860.  
  861. struct NumFormatString {
  862.     char fLength;
  863.     char fVersion;
  864.     char data[254];                 /*private data*/
  865. };
  866.  
  867. typedef struct NumFormatString NumFormatString;
  868.  
  869. struct Itl4Rec {
  870.     short flags;
  871.     long resourceType;
  872.     short resourceNum;
  873.     short version;
  874.     long resHeader1;
  875.     long resHeader2;
  876.     short numTables;                /*one-based*/
  877.     long mapOffset;                 /*offsets are from record start*/
  878.     long strOffset;
  879.     long fetchOffset;
  880.     long unTokenOffset;
  881.     long defPartsOffset;
  882.     long resOffset6;
  883.     long resOffset7;
  884.     long resOffset8;
  885. };
  886.  
  887. typedef struct Itl4Rec Itl4Rec;
  888. typedef Itl4Rec *Itl4Ptr, **Itl4Handle;
  889.  
  890. /* New NItl4Rec for System 7.0: */
  891. struct NItl4Rec {
  892.     short flags;
  893.     long resourceType;
  894.     short resourceNum;
  895.     short version;
  896.     short format;
  897.     short resHeader;
  898.     long resHeader2;
  899.     short numTables;                /*one-based*/
  900.     long mapOffset;                 /*offsets are from record start*/
  901.     long strOffset;
  902.     long fetchOffset;
  903.     long unTokenOffset;
  904.     long defPartsOffset;
  905.     long whtSpListOffset;
  906.     long resOffset7;
  907.     long resOffset8;
  908.     short resLength1;
  909.     short resLength2;
  910.     short resLength3;
  911.     short unTokenLength;
  912.     short defPartsLength;
  913.     short whtSpListLength;
  914.     short resLength7;
  915.     short resLength8;
  916. };
  917.  
  918. typedef struct NItl4Rec NItl4Rec;
  919. typedef NItl4Rec *NItl4Ptr, **NItl4Handle;
  920.  
  921. struct NumberParts {
  922.     short version;
  923.     WideChar data[31];              /*index by [tokLeftQuote..tokMaxSymbols]*/
  924.     WideCharArr pePlus;
  925.     WideCharArr peMinus;
  926.     WideCharArr peMinusPlus;
  927.     WideCharArr altNumTable;
  928.     char reserved[20];
  929. };
  930.  
  931. typedef struct NumberParts NumberParts;
  932. typedef NumberParts *NumberPartsPtr;
  933.  
  934. struct FVector {
  935.     short start;
  936.     short length;
  937. };
  938.  
  939. typedef struct FVector FVector;
  940.  
  941.  
  942. typedef FVector TripleInt[3];       /* index by [fPositive..fZero] */
  943.  
  944. struct ScriptRunStatus {
  945.     char script;
  946.     char variant;
  947. };
  948.  
  949. typedef struct ScriptRunStatus ScriptRunStatus;
  950.  
  951.  
  952. /* type for truncWhere parameter in new TruncString, TruncText */
  953. typedef short TruncCode;
  954.  
  955. /* type for styleRunPosition parameter in NPixel2Char etc. */
  956. typedef short JustStyleCode;
  957.  
  958. #ifdef __cplusplus
  959. extern "C" {
  960. #endif
  961. pascal short FontScript(void)
  962.     = {0x2F3C,0x8200,0x0000,0xA8B5}; 
  963. pascal short IntlScript(void)
  964.     = {0x2F3C,0x8200,0x0002,0xA8B5}; 
  965. pascal void KeyScript(short code)
  966.     = {0x2F3C,0x8002,0x0004,0xA8B5}; 
  967. pascal short Font2Script(short fontNumber)
  968.     = {0x2F3C,0x8202,0x0006,0xA8B5}; 
  969. pascal long GetEnvirons(short verb)
  970.     = {0x2F3C,0x8402,0x0008,0xA8B5}; 
  971. pascal OSErr SetEnvirons(short verb,long param)
  972.     = {0x2F3C,0x8206,0x000A,0xA8B5}; 
  973. pascal long GetScript(short script,short verb)
  974.     = {0x2F3C,0x8404,0x000C,0xA8B5}; 
  975. pascal OSErr SetScript(short script,short verb,long param)
  976.     = {0x2F3C,0x8208,0x000E,0xA8B5}; 
  977. pascal short CharByte(Ptr textBuf,short textOffset)
  978.     = {0x2F3C,0x8206,0x0010,0xA8B5}; 
  979. pascal short CharType(Ptr textBuf,short textOffset)
  980.     = {0x2F3C,0x8206,0x0012,0xA8B5}; 
  981. pascal short Pixel2Char(Ptr textBuf,short textLen,short slop,short pixelWidth,
  982.     Boolean& leadingEdge)
  983.     = {0x2F3C,0x820E,0x0014,0xA8B5}; 
  984. pascal short Char2Pixel(Ptr textBuf,short textLen,short slop,short offset,
  985.     short direction)
  986.     = {0x2F3C,0x820C,0x0016,0xA8B5}; 
  987. pascal OSErr Transliterate(Handle srcHandle,Handle dstHandle,short target,
  988.     long srcMask)
  989.     = {0x2F3C,0x820E,0x0018,0xA8B5}; 
  990. pascal void FindWord(Ptr textPtr,short textLength,short offset,Boolean leadingEdge,
  991.     BreakTablePtr breaks,OffsetTable offsets)
  992.     = {0x2F3C,0x8012,0x001A,0xA8B5}; 
  993. pascal void HiliteText(Ptr textPtr,short textLength,short firstOffset,short secondOffset,
  994.     OffsetTable offsets)
  995.     = {0x2F3C,0x800E,0x001C,0xA8B5}; 
  996. pascal void DrawJust(Ptr textPtr,short textLength,short slop)
  997.     = {0x2F3C,0x8008,0x001E,0xA8B5}; 
  998. pascal void MeasureJust(Ptr textPtr,short textLength,short slop,Ptr charLocs)
  999.     = {0x2F3C,0x800C,0x0020,0xA8B5}; 
  1000. pascal Boolean ParseTable(CharByteTable table)
  1001.     = {0x2F3C,0x8204,0x0022,0xA8B5}; 
  1002. pascal short GetDefFontSize(void)
  1003.     = {0x3EB8,0x0BA8,0x6604,0x3EBC,0x000C}; 
  1004. #define GetSysFont() (* (short*) 0x0BA6)
  1005. #define GetAppFont() (* (short*) 0x0984)
  1006. #define GetMBarHeight() (* (short*) 0x0BAA)
  1007. #define GetSysJust() (* (short*) 0x0BAC)
  1008. pascal void SetSysJust(short newJust)
  1009.     = {0x31DF,0x0BAC}; 
  1010. pascal void ReadLocation(MachineLocation& loc)
  1011.     = {0x205F,0x203C,0x000C,0x00E4,0xA051}; 
  1012. pascal void WriteLocation(const MachineLocation& loc)
  1013.     = {0x205F,0x203C,0x000C,0x00E4,0xA052}; 
  1014. pascal void UprText(Ptr textPtr,short len)
  1015.     = {0x301F,0x205F,0xA054}; 
  1016. pascal void LwrText(Ptr textPtr,short len)
  1017.     = {0x301F,0x205F,0xA056}; 
  1018.  
  1019. /*  New for 7.0  */
  1020. pascal void LowerText(Ptr textPtr,short len)
  1021.     = {0x301F,0x205F,0xA056}; 
  1022. pascal void StripText(Ptr textPtr,short len)
  1023.     = {0x301F,0x205F,0xA256}; 
  1024. pascal void UpperText(Ptr textPtr,short len)
  1025.     = {0x301F,0x205F,0xA456}; 
  1026. pascal void StripUpperText(Ptr textPtr,short len)
  1027.     = {0x301F,0x205F,0xA656}; 
  1028.  
  1029. pascal StyledLineBreakCode StyledLineBreak(Ptr textPtr,long textLen,long textStart,
  1030.     long textEnd,long flags,Fixed& textWidth,long& textOffset)
  1031.     = {0x2F3C,0x821C,0xFFFE,0xA8B5}; 
  1032. pascal void GetFormatOrder(FormatOrderPtr ordering,short firstFormat,short lastFormat,
  1033.     Boolean lineRight,Ptr rlDirProc,Ptr dirParam)
  1034.     = {0x2F3C,0x8012,0xFFFC,0xA8B5}; 
  1035. pascal TokenResults IntlTokenize(TokenBlockPtr tokenParam)
  1036.     = {0x2F3C,0x8204,0xFFFA,0xA8B5}; 
  1037. pascal OSErr InitDateCache(DateCachePtr theCache)
  1038.     = {0x2F3C,0x8204,0xFFF8,0xA8B5}; 
  1039. pascal String2DateStatus String2Date(Ptr textPtr,long textLen,DateCachePtr theCache,
  1040.     long& lengthUsed,LongDateRec& dateTime)
  1041.     = {0x2F3C,0x8214,0xFFF6,0xA8B5}; 
  1042. pascal String2DateStatus String2Time(Ptr textPtr,long textLen,DateCachePtr theCache,
  1043.     long& lengthUsed,LongDateRec& dateTime)
  1044.     = {0x2F3C,0x8214,0xFFF4,0xA8B5}; 
  1045. pascal void LongDate2Secs(const LongDateRec& lDate,LongDateTime& lSecs)
  1046.     = {0x2F3C,0x8008,0xFFF2,0xA8B5}; 
  1047. pascal void LongSecs2Date(LongDateTime& lSecs,LongDateRec& lDate)
  1048.     = {0x2F3C,0x8008,0xFFF0,0xA8B5}; 
  1049. pascal ToggleResults ToggleDate(LongDateTime& lSecs,LongDateField field,
  1050.     DateDelta delta,short ch,const TogglePB& params)
  1051.     = {0x2F3C,0x820E,0xFFEE,0xA8B5}; 
  1052. pascal FormatStatus Str2Format(ConstStr255Param inString,const NumberParts& partsTable,
  1053.     NumFormatString& outString)
  1054.     = {0x2F3C,0x820C,0xFFEC,0xA8B5}; 
  1055. pascal FormatStatus Format2Str(const NumFormatString& myCanonical,const NumberParts& partsTable,
  1056.     Str255& outString,TripleInt& positions)
  1057.     = {0x2F3C,0x8210,0xFFEA,0xA8B5}; 
  1058. pascal FormatStatus FormatX2Str(extended x,const NumFormatString& myCanonical,
  1059.     const NumberParts& partsTable,Str255& outString)
  1060.     = {0x2F3C,0x8210,0xFFE8,0xA8B5}; 
  1061. pascal FormatStatus FormatStr2X(ConstStr255Param source,const NumFormatString& myCanonical,
  1062.     const NumberParts& partsTable,extended& x)
  1063.     = {0x2F3C,0x8210,0xFFE6,0xA8B5}; 
  1064. pascal Fixed PortionText(Ptr textPtr,long textLen)
  1065.     = {0x2F3C,0x8408,0x0024,0xA8B5}; 
  1066. pascal ScriptRunStatus FindScriptRun(Ptr textPtr,long textLen,long& lenUsed)
  1067.     = {0x2F3C,0x820C,0x0026,0xA8B5}; 
  1068. pascal long VisibleLength(Ptr textPtr,long textLen)
  1069.     = {0x2F3C,0x8408,0x0028,0xA8B5}; 
  1070. pascal short ValidDate(LongDateRec& vDate,long flags,LongDateTime& newSecs)
  1071.     = {0x2F3C,0x8204,0xFFE4,0xA8B5}; 
  1072.  
  1073. /*  New for 7.0  */
  1074. pascal void NFindWord(Ptr textPtr,short textLength,short offset,Boolean leadingEdge,
  1075.     NBreakTablePtr nbreaks,OffsetTable offsets)
  1076.     = {0x2F3C,0x8012,0xFFE2,0xA8B5}; 
  1077. pascal short TruncString(short width,Str255& theString,TruncCode truncWhere)
  1078.     = {0x2F3C,0x8208,0xFFE0,0xA8B5}; 
  1079. pascal short TruncText(short width,Ptr textPtr,short& length,TruncCode truncWhere)
  1080.     = {0x2F3C,0x820C,0xFFDE,0xA8B5}; 
  1081. pascal short ReplaceText(Handle baseText,Handle substitutionText,Str15 key)
  1082.     = {0x2F3C,0x820C,0xFFDC,0xA8B5}; 
  1083. pascal short NPixel2Char(Ptr textBuf,long textLen,Fixed slop,Fixed pixelWidth,
  1084.     Boolean& leadingEdge,Fixed& widthRemaining,JustStyleCode styleRunPosition,
  1085.     Point numer,Point denom)
  1086.     = {0x2F3C,0x8222,0x002E,0xA8B5}; 
  1087. pascal short NChar2Pixel(Ptr textBuf,long textLen,Fixed slop,long offset,
  1088.     short direction,JustStyleCode styleRunPosition,Point numer,Point denom)
  1089.     = {0x2F3C,0x821C,0x0030,0xA8B5}; 
  1090. pascal void NDrawJust(Ptr textPtr,long textLength,Fixed slop,JustStyleCode styleRunPosition,
  1091.     Point numer,Point denom)
  1092.     = {0x2F3C,0x8016,0x0032,0xA8B5}; 
  1093. pascal void NMeasureJust(Ptr textPtr,long textLength,Fixed slop,Ptr charLocs,
  1094.     JustStyleCode styleRunPosition,Point numer,Point denom)
  1095.     = {0x2F3C,0x801A,0x0034,0xA8B5}; 
  1096. pascal Fixed NPortionText(Ptr textPtr,long textLen,JustStyleCode styleRunPosition,
  1097.     Point numer,Point denom)
  1098.     = {0x2F3C,0x8412,0x0036,0xA8B5}; 
  1099. #ifdef __cplusplus
  1100. }
  1101. #endif
  1102.  
  1103. #endif
  1104.